package com.crm.jpaandthymeleaf.service;

import com.crm.jpaandthymeleaf.web.exception.LoginException;

/**
 * @author 周敬
 * @version 1.0
 * @packageName com.crm.jpaandthymeleaf.service
 * @fileName LockLoginService
 * @createTime 2021/12/30-8:32-星期四
 * @lastModify 2021/12/30-8:32-星期四
 */
public interface LockLoginService {

    /**
     * Redis中数据的key的前缀
     * 登录次数
     * 锁定用户登录
     */
    String SHIRO_LOGIN_COUNT = "shiro_login_count_";
    String SHIRO_IS_LOCK = "shiro_is_lock_";
    String SHIRO_LOCK_VALUE = "LOCK";

    /**
     * 检查用户是否能登录
     * @param usrName
     * @throws LoginException
     */
    void checkLogin(String usrName) throws LoginException;

    /**
     * 锁定用户
     * @param usrName
     */
    void lock(String usrName);

    /**
     * 判断LOCK是否已经被锁定
     * @param usrName
     * @return
     */
    boolean isLock(String usrName);

    /**
     * 解锁用户
     * @param usrName
     */
    void unLock(String usrName);

    /**
     * 清空登录记录
     * @param usrName
     */
    void clean(String usrName);
}
